#include<bits/stdc++.h>
using namespace std;

class Solution {
public:
    vector<int> findDuplicates(vector<int>& nums) {
        for(int i = 0; i < nums.size(); i++){
            while(nums[i] != nums[nums[i] - 1])swap(nums[i], nums[nums[i] - 1]);
        }
        vector<int>ans;
        for(int i = 0; i < nums.size(); i++){
            if(nums[i] != i + 1)ans.emplace_back(nums[i]);
        }
        return ans;
    }
};
/**
 * @brief 2022.5.8
 * 原地哈希
 * 数组范围 1 ~ n 且每个数字只出现 1 或 2 次，这时可以用。
 */